#__iter__必须返回一个迭代器。一个类只要有__iter__方法，那么这和类就是一个迭代器。迭代器实现后,每一次迭代的返回结果在__next__方法中
#利用迭代器输出一个三角形,_-iter__方法构造迭代器,__next__方法，获取迭代结果，__init__方法进行变量初始化,for循环输出自定义迭代
class MyIter:
    def __init__(self):
        self.n=1

    def __iter__(self):
        return self

    def __next__(self):
        str='*'*(2*self.n-1)
        self.n+=1
        return str


my=MyIter()
# print(my)
for e in my:
    if len(e)>20:
       break
    print(e)

class MyNumber:
    def __iter__(self):
        self.a=0
        return self
    def __next__(self):
        if self.a<=20:
            x=self.a
            self.a+=1
            return x
        else:
            raise StopIteration

myn=MyNumber()
myclass=iter(myn)
for i in myclass:
    print(i)



